home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 039a / mawk10.zip / CODE.H < prev    next >
C/C++ Source or Header  |  1991-10-05  |  4KB  |  151 lines

  1.  
  2. /********************************************
  3. code.h
  4. copyright 1991, Michael D. Brennan
  5.  
  6. This is a source file for mawk, an implementation of
  7. the AWK programming language.
  8.  
  9. Mawk is distributed without warranty under the terms of
  10. the GNU General Public License, version 2, 1991.
  11. ********************************************/
  12.  
  13.  
  14. /* $Log:    code.h,v $
  15.  * Revision 3.3.1.1  91/09/14  17:22:54  brennan
  16.  * VERSION 1.0
  17.  * 
  18.  * Revision 3.3  91/08/13  06:51:01  brennan
  19.  * VERSION .9994
  20.  * 
  21.  * Revision 3.2  91/06/28  04:16:16  brennan
  22.  * VERSION 0.999
  23.  * 
  24.  * Revision 3.1  91/06/07  10:27:05  brennan
  25.  * VERSION 0.995
  26.  * 
  27.  * Revision 2.1  91/04/08  08:22:48  brennan
  28.  * VERSION 0.97
  29.  * 
  30. */
  31.  
  32.  
  33. /*  code.h  */
  34.  
  35. #ifndef  CODE_H
  36. #define  CODE_H
  37.  
  38. #include "memory.h"
  39. #include <setjmp.h>
  40.  
  41. /* coding scope */
  42. #define   SCOPE_MAIN    0
  43. #define   SCOPE_BEGIN   1  
  44. #define   SCOPE_END     2
  45. #define   SCOPE_FUNCT   3
  46.  
  47.  
  48. extern  INST  *code_ptr ;
  49. extern  INST  *begin_start , *begin_code_ptr ;
  50. extern  INST  *end_start , *end_code_ptr ;
  51. extern  INST  *main_start, *main_code_ptr ;
  52. extern  unsigned begin_size, end_size, main_size ;
  53.  
  54. extern  CELL  eval_stack[] ;
  55.  
  56.  
  57. #define  code1(x)  code_ptr++ -> op = (x)
  58.  
  59. #define  code2(x,y)    (void)( code_ptr++ -> op = (x) ,\
  60.                          code_ptr++ -> ptr = (PTR)(y) )
  61.  
  62.  
  63. /*  the machine opcodes  */
  64.  
  65. #define _HALT            0
  66. #define _STOP            1
  67. #define _STOP0           2  
  68. #define _PUSHC           3
  69. #define _PUSHINT         4
  70. #define _PUSHA           5
  71. #define _PUSHI           6
  72. #define L_PUSHA          7
  73. #define L_PUSHI          8
  74. #define AE_PUSHA         9
  75. #define AE_PUSHI        10
  76. #define A_PUSHA         11
  77. #define LAE_PUSHA       12
  78. #define LAE_PUSHI       13
  79. #define LA_PUSHA        14
  80. #define F_PUSHA         15
  81. #define FE_PUSHA        16
  82. #define F_PUSHI         17
  83. #define FE_PUSHI        18
  84. #define _POP            19
  85. #define _PULL           20
  86. #define _DUP            21
  87. #define _ADD            22
  88. #define _SUB            23
  89. #define _MUL            24
  90. #define _DIV            25
  91. #define _MOD            26
  92. #define _POW            27
  93. #define _NOT            28
  94. #define _TEST           29
  95. #define A_TEST          30
  96. #define A_DEL           31
  97. #define A_LOOP          32
  98. #define A_CAT           33
  99. #define _UMINUS         34
  100. #define _UPLUS          35
  101. #define _ASSIGN         36
  102. #define _ADD_ASG        37
  103. #define _SUB_ASG        38
  104. #define _MUL_ASG        39
  105. #define _DIV_ASG        40
  106. #define _MOD_ASG        41
  107. #define _POW_ASG        42
  108. #define F_ASSIGN        43
  109. #define F_ADD_ASG       44
  110. #define F_SUB_ASG       45
  111. #define F_MUL_ASG       46
  112. #define F_DIV_ASG       47
  113. #define F_MOD_ASG       48
  114. #define F_POW_ASG       49
  115. #define _CAT            50
  116. #define _BUILTIN        51
  117. #define _PRINT          52
  118. #define _POST_INC       53
  119. #define _POST_DEC       54
  120. #define _PRE_INC        55
  121. #define _PRE_DEC        56
  122. #define F_POST_INC      57
  123. #define F_POST_DEC      58
  124. #define F_PRE_INC       59
  125. #define F_PRE_DEC       60
  126. #define _JMP            61
  127. #define _JNZ            62
  128. #define _JZ             63
  129. #define _EQ             64
  130. #define _NEQ            65
  131. #define _LT             66
  132. #define _LTE            67
  133. #define _GT             68
  134. #define _GTE            69
  135. #define _MATCH          70
  136. #define _EXIT           71
  137. #define _EXIT0          72
  138. #define _NEXT           73
  139. #define _RANGE          74
  140. #define _CALL           75
  141. #define _RET            76
  142. #define _RET0           77
  143.  
  144.  
  145. /* next and exit statements */
  146.  
  147. extern jmp_buf  exit_jump, next_jump ;
  148. extern int exit_code ;
  149.  
  150. #endif  /* CODE_H */
  151.